/**
 * @fileOverview 生命特征
 */

module.exports = {
    attributes: {
        life: {
            label: '生命值',
            type: 'datatype.Integer',
            options: {min: 0},
            defaultValue: 1
        },
        HP: {
            label: '体力值',
            type: 'datatype.Integer',
            options: {min: 0},
            defaultValue: 1
        }
    },
    methods: {
        /**
         * 加血 但不能超过最大值
         * @param {Number} v 增加数量
         */
        incHP: function(v) {
            var value = Math.min(this.dict('HP'), v + this.get('HP'));
            this.set('HP', value);
        },
        decHP: function(v) {
            var value = Math.max(0, this.get('HP') - v);
            this.set('HP', value);
            if (value === 0) {
                if (this.get('life') === 0) {
                    this.set('stage', 'die')
                } else {
                    this.set('state', 'awaitRevive');
                }
            }
        },
        /**
         * 重生 满血复活 生命值减一
         */
        revive: function() {
            var life = this.get('life');
            if (life > 0) {
                life -= 1;
                this.set('HP', this.dict('HP'));
                this.set('stage', 'revive');
            }
        }
    },
    events: {}
};
